/*
 * @author Pablo RodrÃ­guez FernÃ¡ndez
 */

package prop;

import java.util.List;
import java.util.Vector;
// Adaptacion a Monton Cartas por Michal

public class Mano extends MontonCartas {

    private int numCartasMax;
    public enum Estado {JUGANDO,RETIRADO};
    private Estado estado;

    /* Crea una Mano sin un nÃºmero mÃ¡ximo de cartas.*/
    public Mano() {
        super();
        numCartasMax = 0;
    }

    /* Crea una Mano con un nÃºmero mÃ¡ximo de cartas numMax. */
    public Mano(int numMax) {
        super();
        numCartasMax = numMax;
    }

    public int getNumCartasMax() {
        return numCartasMax;
    }

    /* Retorna falso si ya se tiene el nÃºmero mÃ¡ximo de Cartas, en otro caso
        aÃ±ade la Carta c a la mano. */

    @Override
    public boolean anadirCarta(Carta c) {
        if (cartas.size() < numCartasMax || numCartasMax == 0) {
            super.anadirCarta(c);
        }
        else return false;
        return true;
    }

    /* Pre: La Carta c se encuentra en la mano.
        Elimina la carta C y la retorna. */
    public Carta quitarCarta(Carta c) {
        cartas.remove(c);
        return c;
    }

    /* Retorna un vector de Carta. */
    public Vector<Carta> getVector() {
        Vector<Carta> v = new Vector<Carta>();
        for (int i = 0; i < cartas.size(); ++i) v.add((Carta) cartas.get(i));
        return v;
    }

    public Estado getEstado() {
        return estado;
    }

    public void setEstado(Estado e) {
        estado = e;
    }

    /* Borra las cartas presentes en la mano. */
    public void borrarMano() {
        cartas.clear();
    }

    /* FunciÃ³n asbtracta. */
    public int evaluar() {
        return 0;
    }

    /* FunciÃ³n abstracta */
    public List ordenar() {
        return cartas;
    }
};
